有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java中的条件语句。属性文件

有没有办法在.properties文件中包含条件语句

比如:

if(condition1)
    xyz = abc
else if(condition2)
    xyz = efg

共 (5) 个答案

  1. # 2 楼答案

    正如@Jigar所说,属性文件中没有条件逻辑。但是你可以有两行,比如:

    xyz.condition1 = abs
    xyz.condition2 = efg
    

    并且,在访问属性的代码中,将适当的条件附加到密钥

  2. # 3 楼答案

    如果您的问题是针对不同环境的不同属性(例如devl、test、perf、prod),那么常见的解决方案是针对每个环境的不同版本的属性文件。将环境信息传达给应用程序,并查找附加了正确名称的文件

    类似这样的春天:

    Environment-specific configuration for a Spring-based web application?

  3. # 4 楼答案

    No属性文件中没有这样的条件语句,可能是您需要在Properties上编写一个包装器来封装您的逻辑

    例如:

    class MyProperties extends Properties {
    
    
        /**
         * 
         * 
         * 
         * @param key
         * @param conditionalMap
         * @return
         */
        public String getProperty(String key, List<Decision> decisionList) {
            if (decisionList == null) {
                return getProperty(key);
            }
            Long value = Long.parseLong(getProperty(key));
            for (Decision decision : decisionList) {
                if (Condition.EQUALS == decision.getCondition() && decision.getValue().equals(value)) {
                    return getProperty(decision.getTargetKey());
                }
            }
            return super.getProperty(key);
        }
    }
    

    enum Condition {
        EQUALS, GREATER, LESSER
    
    }
    

    class Decision {
        Condition condition;
        String targetKey;
        Long value;
        //accessor
    
        public Condition getCondition() {
            return condition;
        }
    
        public void setCondition(Condition condition) {
            this.condition = condition;
        }
    
        public String getTargetKey() {
            return targetKey;
        }
    
        public void setTargetKey(String targetKey) {
            this.targetKey = targetKey;
        }
    
    }
    

    例如,现在如果你想读取属性文件,获取年龄类别,如果它大于0且小于10 readkid

    也许你可以通过这些条件的清单

    注意:这个设计可以进行很多改进(不是很好的设计),它只是演示如何包装属性和添加OP想要的东西

  4. # 5 楼答案

    就是这样:

    xyz[condition1]=abs
    xyz[condition2]=efg